
const ocr_api20210707 = require("@alicloud/ocr-api20210707");
const OpenApi = require("@alicloud/openapi-client");
const Util = require("@alicloud/tea-util");
const Stream = require("@alicloud/darabonba-stream");
const Tea = require("@alicloud/tea-typescript");
class Client {
  /**
   * 使用AK&SK初始化账号Client
   * @return Client
   * @throws Exception
   */
  static createClient() {
    // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
    // 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378664.html。
    let config = new OpenApi.Config({
      // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
      accessKeyId: "LTAI5tREcfTvKf5Z7aHhhvHa",
      // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
      accessKeySecret: "s7vajZivbUXKLQYtJAklNS9YIctXZ1",
    });
    // Endpoint 请参考 https://api.aliyun.com/product/ocr-api
    config.endpoint = `ocr-api.cn-hangzhou.aliyuncs.com`;
    return new ocr_api20210707.default(config);
  }

  static async main(filename) {
    let client = Client.createClient();
    // 需要安装额外的依赖库，直接点击下载完整工程即可看到所有依赖。
    let bodyStream = Stream.default.readFromFilePath("./uploads/" + filename);
    let recognizeGeneralRequest = new ocr_api20210707.RecognizeGeneralRequest({
      body: bodyStream,
    });
    let runtime = new Util.RuntimeOptions({});
    try {
      // 复制代码运行请自行打印 API 的返回值
      const res = await client.recognizeGeneralWithOptions(
        recognizeGeneralRequest,
        runtime
      );
      return res.body.data;
    } catch (error) {
      // 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
      // 错误 message
      console.log(error.message);
      // 诊断地址
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }
  }
}

exports.Client = Client;